/*
 * @Author: coocase
 * @Date: 2021-03-10 12:19:13
 * @LastEditTime: 2021-03-26 12:39:12
 * @LastEditors: coocase
 * @Description: axios的配置
 * @FilePath: \git\dami\src\common\http\request.js
 */
import axios from 'axios'


const timeout = 3000
//基础配置
const axiosConfig = {
    timeout,
    withCredentials: true,
    headers:{
        'X-Requested-With': 'XMLHttpRequest'
    }
}

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    return response;
  }, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
  });

  
//默认导出
export default (method, url, option = {}) => {
    //获取方法 并转换为大写
    method = (method || '').toUpperCase()
    //获取自定义配置
    const config = option.config || {}
    //获取url配置
    const urlConfig = {method,url}
    //判断方法，如果是post则将上传的Data 赋值给 urlConfig.data   axios配置中data 属性仅为 post put 等方法有，params为get method
    if(method =='POST'){
      urlConfig.data = option.data
      // console.log(option);
    }else if(method == 'GET'){
      urlConfig.params = option.data
    }
    
    // console.log({
    //   ...axiosConfig,//默认配置
    //   ...urlConfig,//url配置
    //   ...config//自定义配置
    // })
    //通过axios API来创建请求
    return axios({
        ...axiosConfig,//默认配置
        ...urlConfig,//url配置
        ...config//自定义配置
    }).then(ret => ret.data)
}


